<?php
session_start();
require "include/dbms.inc.php";
require "include/template.inc.php";
require "include/setcontents.inc.php";
require "include/accesscontrol.inc.php";
require "include/formcontrol.inc.php";

accesscontrol::controllo_privilegi();

function displaydefault(){
    if (!isset($_GET['by'])){
        $_GET['by']="cognome";
    }
    $result = setcontents::getResult("SELECT utente.nome, utente.cognome,utente.cod_fisc, utente.email, gruppo.nome as gruppo, reg_conf.confirm
                        FROM
                        utente
                        LEFT JOIN
                        privilegi
                        ON utente.email=privilegi.email_utente
                        LEFT JOIN
                        gruppo
                        ON privilegi.id_gruppo=gruppo.id
                        LEFT JOIN
                        reg_conf
                        ON reg_conf.email_utente=utente.email
                        ORDER BY ".$_GET['by']." ".$_GET['ord']);
    
    global $body;
    $body = new Template ("dtml/pannello_utenti.html");
    $body->setContent("utenti", $result);
}

if (isset($_GET['ut'])){
    $_POST['op']='visualizza';
}

if (isset($_GET['order'])){
    $_POST['op']='visualizza';
}

switch ($_POST['op']){//verifichiamo le operazioni da effettuare in base all'opzione selezionata

    case 'registra':
        
        if (!isset($_POST['page'])) {
        $_POST['page'] = 0;//form non compilato
        }

        switch ($_POST['page']) {//switch per form registrazione e riepilogo

           case '0':
               $body = new Template("dtml/form.html");
               formcontrol::precform($body,"registrazione");
               break;

           case '1'://form compilato
            list($_POST['gruppo'],$nome_gruppo)=explode('-',$_POST['gruppo']);//In $_POST['gruppo'] rimane l'id del gruppo, nell'altra variabile il nome

            if(formcontrol::field($body,$message,$style)){//la funzione effettua dei controlli sui dati inseriti nel form e stampa il messaggio $message con lo stile $style. In $body restituisce il form precompilato

                $message="Controllare i dati inseriti. Premere \"invia\" per confermare, altrimenti \"modifica\"";
                $body = new Template("dtml/RiepilogoDatiReg.html");
                formcontrol::precform($body,"riepilogo");
            }
            break;

            case '2'://invia o modifica
                $body = new Template("dtml/form.html");
                if ($_POST['action']=="invia"){//richiesta di inserimento

                list($giorno,$mese,$anno)=explode('/', $_POST['data_di_nascita']);
                $data=$anno.$mese.$giorno;
                $nome = addslashes($_POST['nome']);
                $cognome = addslashes($_POST['cognome']);
                $indirizzo = addslashes($_POST['indirizzo']);
                $citta = addslashes($_POST['citta']);

                $oid = mysql_query("INSERT INTO utente VALUES (
                                    '{$nome}',
                                    '{$cognome}',
                                    '{$data}',
                                    '{$_POST['sesso']}',
                                    '{$_POST['cod_fisc']}',
                                    '{$_POST['rec_tel']}',
                                    '{$indirizzo}',
                                    '{$citta}',
                                    '{$_POST['cap']}',
                                    '{$_POST['provincia']}',
                                    '{$_POST['email']}',
                                    MD5('{$_POST['password']}'))");


                
                $oid2=mysql_query("INSERT INTO privilegi values ('{$_POST['email']}','{$_POST['gruppo']}')");

                if (!($oid and $oid2)){
                    $message="Inserimento fallito, errore nel database:".mysql_error();
                    $style="alert";
                    formcontrol::precform($body,"registrazione");
                }else{
                    $message="Inserimento nuovo utente {$utenza} eseguito con successo";
                    $style="message";
                    displaydefault();
                }

                }else{//richiesta di modifica, viene ricaricato il form precompilato

                    $message="Inserimento nuovo utente: {$utenza}";
                    $style="message";
                    formcontrol::precform($body,"registrazione");
                }
                break;
        }



        break;

    case 'conferma':

        if (!isset($_POST['check'])){
            $message="Nessun utente selezionato";
               $style="alert";
              
        }else{
        $ut=$_POST['check'];
            
            foreach ($ut as $k => $v){
                $oid=mysql_query("SELECT reg_conf.confirm FROM reg_conf WHERE reg_conf.email_utente='{$v}'");

                if (!$oid){
                   $message="Errore nel database".mysql_error();
                   $style="alert";
                   break;
                }

                if (mysql_num_rows($oid)==0){
                   $message="Selezionare solo gli utenti la cui registrazione non è confermata";
                   $style="alert";
                   break;
                }else{
                   $oid=mysql_query("DELETE FROM reg_conf WHERE reg_conf.email_utente='{$v}'");
                   $oid2=mysql_query("INSERT INTO privilegi VALUES ('{$v}','3')");
                   if (!($oid and $oid2)){
                       $message="Errore nel database".mysql_error();
                       $style="alert";
                       break;
                   }else{
                       $message="La registrazione degli utenti selezionati è stata confermata";
                       $style="message";
                   }
                }
            }
        }
        displaydefault();
        break;

    case 'elimina':

        if (!isset($_POST['check'])){
            $message="Nessun utente selezionato";
            $style="alert";
            displaydefault();
            break;             
        }
        $ut=$_POST['check'];

        foreach ($ut as $k => $v){
            $oid=mysql_query("DELETE FROM utente WHERE utente.email='{$v}'");

            if (!$oid){
               $message="Errore nel database durante l'eliminazione";
               $style="alert";
               break;
            }
        }
        $message="Eliminazione conclusa con successo";
        $style="message";
        displaydefault();
        break;


    case 'modifica':
        
        if (!isset($_POST['page'])) {
        $_POST['page'] = 0;//form non compilato
        }

        switch ($_POST['page']) {//switch per form registrazione e riepilogo

           case '0':
               $body=new Template("dtml/form.html");
               formcontrol::precform($body,"registrazione");
               
               break;

           case '1'://form compilato
               if ($_POST['gruppo']!='0'){//verifico se il gruppo è stato modificato
                    list($_POST['gruppo'],$nome_gruppo)=explode('-',$_POST['gruppo']);//In $_POST['gruppo'] rimane l'id del gruppo, nell'altra variabile il nome
               }

               if(formcontrol::field($body,$message,$style)){//la funzione effettua dei controlli sui dati inseriti nel form e stampa il messaggio $message con lo stile $style. In $body restituisce il form precompilato
                    $message="Controllare i dati inseriti. Premere \"invia\" per confermare, altrimenti \"modifica\"";
                    $body = new Template("dtml/RiepilogoDatiReg.html");
                    formcontrol::precform($body,"riepilogo");
                }
            break;

            case '2'://invia o modifica
                $body = new Template("dtml/form.html");
                if ($_POST['action']=="invia"){//richiesta di inserimento

                list($giorno,$mese,$anno)=explode('/', $_POST['data_di_nascita']);
                $data=$anno.$mese.$giorno;
                $nome = addslashes($_POST['nome']);
                $cognome = addslashes($_POST['cognome']);
                $indirizzo = addslashes($_POST['indirizzo']);
                $citta = addslashes($_POST['citta']);
                $oid1 = mysql_query("UPDATE utente SET
                                    nome='{$nome}',
                                    cognome='{$cognome}',
                                    data_di_nascita='{$data}',
                                    sesso='{$_POST['sesso']}',
                                    cod_fisc='{$_POST['cod_fisc']}',
                                    rec_tel='{$_POST['rec_tel']}',
                                    indirizzo='{$indirizzo}',
                                    citta='{$citta}',
                                    cap='{$_POST['cap']}',
                                    provincia='{$_POST['provincia']}',
                                    email='{$_POST['email']}'
                                    WHERE utente.email='{$_POST['email_bck']}'");

                if (strcmp($_POST['password'],"")){
                    $oid2 = mysql_query("UPDATE utente SET password=MD5('{$_POST['password']}') WHERE utente.email='{$_POST['email']}'");
                }else{
                    $oid2 = TRUE;
                }

                if ($_POST['gruppo']!="0"){
                    $oid3 = mysql_query("UPDATE privilegi SET id_gruppo='{$_POST['gruppo']}' WHERE privilegi.email_utente='{$_POST['email']}'");
                }else{
                    $oid3 = TRUE;
                }

                if (!($oid1 and $oid2 and $oid3)){
                    $message="Modifica fallita, errore nel database:".mysql_error();
                    $style="alert";
                    formcontrol::precform($body,"registrazione");
                }else{
                    $message="Modifica eseguita con successo";
                    $style="message";
                    displaydefault();
                }

                }else{//richiesta di modifica, viene ricaricato il form precompilato

                    $message="Inserimento nuovo utente: {$utenza}";
                    $style="message";
                    formcontrol::precform($body,"registrazione");
                }
                break;
        }
        break;

    
    case 'visualizza':

            $body=new Template("dtml/visualizza_utenti.html");//template per la visualizzazione dettagli utente
            $result=setcontents::getResult(
                "SELECT utente.*,gruppo.nome as gruppo
                    FROM
                    utente
                    LEFT JOIN
                    privilegi
                    ON utente.email = privilegi.email_utente
                    LEFT JOIN
                    gruppo
                    ON privilegi.id_gruppo=gruppo.id                    
                    WHERE utente.email='{$_GET['ut']}'");

             

             $_POST=$result[0];
             formcontrol::precform($body,"riepilogo");

             $storico_prod_ut=new Template("dtml/storico_prod_ut.html");
             $prodotti = setcontents::getResult(
                "SELECT 
                 storico_acquisti.spesa,
                 storico_acquisti.nome_prod,
                 storico_acquisti.q_pren as q,
                 storico_acquisti.data_acq as data
                    FROM
                    utente
                    LEFT JOIN
                    storico_acquisti
                    ON
                    utente.email=storico_acquisti.email_utente
                    WHERE storico_acquisti.email_utente='{$_GET['ut']}'
                    ORDER BY '{$_GET['order']}'");

             $storico_prod_ut->setContent("prodotti",$prodotti);
             $storico_prod_ut->setContent("ut",$_GET['ut']);
             $body->setContent("storico_prod_ut", $storico_prod_ut->get());

             $message="Dati relativi all'utente selezionato recuperati";
             $style="message";
        break;

    default:
        displaydefault();
 }


setcontents::setTemplate();
setcontents::setMenu($message,$style);
setcontents::setBody($body);

$main->close();



?>
